package com.jx.driving.protocol.terminal.channel;

/**
 * 通道,客户端与服务端之间的通道.
 * 
 * @author shenliuyang
 *
 *         2016年8月11日下午1:21:33
 */
public interface Channel {
	/**
	 * 向通道发送数据
	 */
	public void tell(Object msg);

	/**
	 * 像通道发送数据并等待通道返回
	 * 
	 */
	public void tellAndSync(Object msg);

	/**
	 * 向该通道上附加属性
	 */
	public <T> void attr(String key, T object);

	/**
	 * 从通道上获取属性
	 */
	public <T> T attr(String key);

	/**
	 * 关闭
	 */
	public void close();

	public <T> T orginal();
}
